﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Data.OleDb;

namespace QuanLyThuChi
{
    public partial class QuanLyThu : UserControl
    {
        public QuanLyThu()
        {
            InitializeComponent();
        }
        connect cn = new connect();
        public_function pf = new public_function();
        bool them = true;
        int vitri = 0;
        private void load_dulieu()
        {
            gridQuanLyThu.DataSource = pf.getData("Thu_DsThu");
            cobLoaiThu.DataSource = pf.getData("Loai_DS");
            cobLoaiThu.ValueMember = "MaLoai";
            cobLoaiThu.DisplayMember = "TenLoai";

            cobDVT.DataSource = pf.getData("DVT_DS");
            cobDVT.ValueMember = "MaDVT";
            cobDVT.DisplayMember = "TenDVT";

            cobTimLoai.DataSource = pf.getData("Loai_DS");
            cobTimLoai.ValueMember = "MaLoai";
            cobTimLoai.DisplayMember = "TenLoai";
        }
        private void QuanLyThu_Load(object sender, EventArgs e)
        {
            load_dulieu();
            battatcontrol(false);
            battatTimKiem();
        }
        private void battatcontrol(bool val)
        {
            dtNgayThu.Enabled = val;
            cobDVT.Enabled = val;
            cobLoaiThu.Enabled = val;
            txtSoLuong.Enabled = val;
            txtDonGia.Enabled = val;
            txtGhiChu.Enabled = val;
            btnThem.Enabled = !val;
            btnSua.Enabled = !val;
            btnXoa.Enabled = !val;
            gridQuanLyThu.Enabled = !val;
            btnLuu.Enabled = val;
        }
        private void gridQuanLyThu_SelectionChanged(object sender, EventArgs e)
        {
            try
            {
                gridQuanLyThu.CurrentRow.Selected = true;
                txtMaThu.Text = gridQuanLyThu.CurrentRow.Cells["MaThu"].Value.ToString();
                dtNgayThu.Value = Convert.ToDateTime(gridQuanLyThu.CurrentRow.Cells["NgayThu"].Value);
                cobLoaiThu.Text = gridQuanLyThu.CurrentRow.Cells["TenLoai"].Value.ToString();
                cobDVT.SelectedValue = gridQuanLyThu.CurrentRow.Cells["DVT"].Value.ToString();
                txtSoLuong.Text = gridQuanLyThu.CurrentRow.Cells["SoLuong"].Value.ToString();
                txtDonGia.Text = gridQuanLyThu.CurrentRow.Cells["DonGia"].Value.ToString();

            }
            catch
            {
            }
        }        
        private void btnThem_Click(object sender, EventArgs e)
        {
            battatcontrol(true);            
            txtSoLuong.Text = "";
            txtDonGia.Text = "";
            txtGhiChu.Text = "";
            them = true;
        }

        private void btnSua_Click(object sender, EventArgs e)
        {
            battatcontrol(true);
            them = false;
            vitri = gridQuanLyThu.CurrentRow.Index;
            
        }        
        private void btnLuu_Click(object sender, EventArgs e)
        {
            if (dtNgayThu.Value > DateTime.Now)
            {
                MessageBox.Show("Ngày thu không đúng","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);                
            }
            else if (pf.kiemTraTonTai(cobLoaiThu.Text, "Loai_KiemTraTonTaiLoai","tenloai") == false)
            {
                MessageBox.Show("Nhập loại không đúng","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error);
                cobLoaiThu.Focus();
            }
            else if (pf.kiemTraTonTai(cobDVT.Text, "DVT_KiemTraTonTai", "dvt") == false)
            {
                MessageBox.Show("Nhập đơn vị tính không đúng", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                cobDVT.Focus();
            }
            else if (txtSoLuong.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập số lượng","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Error );
                txtSoLuong.Focus();
            }
            else if (txtDonGia.Text == "")
            {
                MessageBox.Show("Bạn chưa nhập đơn giá", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                txtDonGia.Focus();
            }
            else
            {
                if (them == true)
                {                    
                    OleDbCommand cmd = new OleDbCommand("Thu_Insert",cn.ketnoi());
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.Add(new OleDbParameter("ngaythu", OleDbType.Date)).Value = dtNgayThu.Value.Date;
                    cmd.Parameters.Add(new OleDbParameter("loaithu", OleDbType.Integer)).Value = cobLoaiThu.SelectedValue;
                    cmd.Parameters.Add(new OleDbParameter("dvt", OleDbType.Integer)).Value = cobDVT.SelectedValue;
                    cmd.Parameters.Add(new OleDbParameter("soluong", OleDbType.Double)).Value = txtSoLuong.Text;
                    cmd.Parameters.Add(new OleDbParameter("dongia", OleDbType.Double)).Value = txtDonGia.Text;
                    cmd.Parameters.Add(new OleDbParameter("ghichu", OleDbType.LongVarChar)).Value = txtGhiChu.Text;
                    if (cmd.ExecuteNonQuery() == 1)
                    {
                        MessageBox.Show("Thêm thu thành công","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                        load_dulieu();                        
                        battatcontrol(false);   
                    }
                    else
                    {
                        MessageBox.Show("Lỗi trong quá trình thêm","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                        load_dulieu();
                        battatcontrol(false);                        
                        
                    }

                }
                else
                {
                    if (txtMaThu.Text == "")
                    {
                        MessageBox.Show("Bạn chưa chọn dữ liệu nào để cập nhật", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    }
                    else
                    {                        
                        OleDbCommand cmd_update = new OleDbCommand("Thu_Update",cn.ketnoi());
                        cmd_update.CommandType = CommandType.StoredProcedure;
                        cmd_update.Parameters.Add(new OleDbParameter("ngaythu", OleDbType.Date)).Value = dtNgayThu.Value.Date;
                        cmd_update.Parameters.Add(new OleDbParameter("loaithu", OleDbType.Integer)).Value = cobLoaiThu.SelectedValue;
                        cmd_update.Parameters.Add(new OleDbParameter("dvt", OleDbType.Integer)).Value = cobDVT.SelectedValue;
                        cmd_update.Parameters.Add(new OleDbParameter("soluong", OleDbType.Double)).Value = txtSoLuong.Text;
                        cmd_update.Parameters.Add(new OleDbParameter("dongia", OleDbType.Double)).Value = txtDonGia.Text;
                        cmd_update.Parameters.Add(new OleDbParameter("ghichu", OleDbType.LongVarChar)).Value = txtGhiChu.Text;
                        cmd_update.Parameters.Add(new OleDbParameter("mathu",OleDbType.Integer)).Value = txtMaThu.Text;
                        if (cmd_update.ExecuteNonQuery() == 1)
                        {
                            MessageBox.Show("Cập nhật thông tin thành Công","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                            load_dulieu();                            
                            gridQuanLyThu.CurrentCell = gridQuanLyThu.Rows[vitri].Cells[0];
                            gridQuanLyThu.Rows[vitri].Selected = true;
                            battatcontrol(false);
                        }

                    }
                }
            }
        }

        private void txtSoLuong_TextChanged(object sender, EventArgs e)
        {
            if (txtDonGia.Text == "")
            {
                txtThanhTien.Text = "0";
            }
            else if (txtSoLuong.Text == "")
            {
                txtThanhTien.Text = "0";
            }
            else
            {
                
                txtThanhTien.Text = pf.thanhtien(double.Parse(txtDonGia.Text), double.Parse(txtSoLuong.Text)).ToString();
            }

            if (txtSoLuong.Text != "")
            {
                txtSoLuong.Text = String.Format("{0:N0}", double.Parse(txtSoLuong.Text));
                txtSoLuong.SelectionStart = txtSoLuong.Text.Length;
            }
        }

        private void txtDonGia_TextChanged(object sender, EventArgs e)
        {
            if (txtDonGia.Text == "")
            {
                txtThanhTien.Text = "0";
            }
            else if (txtSoLuong.Text == "")
            {
                txtThanhTien.Text = "0";
            }
            else
            {               
                txtThanhTien.Text = pf.thanhtien(double.Parse(txtDonGia.Text), double.Parse(txtSoLuong.Text)).ToString();
            }

            if (txtDonGia.Text != "")
            {
                txtDonGia.Text = String.Format("{0:N0}", double.Parse(txtDonGia.Text));
                txtDonGia.SelectionStart = txtDonGia.Text.Length;
            }
        }

        private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtDonGia_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!Char.IsDigit(e.KeyChar) && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
            }
        }

        private void txtThanhTien_TextChanged(object sender, EventArgs e)
        {
            txtThanhTien.Text = String.Format("{0:N0}", double.Parse(txtThanhTien.Text));
            txtThanhTien.SelectionStart = txtThanhTien.Text.Length;
        }

        private void btnHuy_Click(object sender, EventArgs e)
        {
            load_dulieu();
            checkTimLoai.Checked = false;
            checkTimNgay.Checked = false;
            battatcontrol(false); 
        }

        private void btnXoa_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("Bạn có chắc chắn muốn xóa không?", "Thông Báo", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.Yes)
            {
                OleDbCommand cmd = new OleDbCommand("Thu_Delete", cn.ketnoi());
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OleDbParameter("mathu",OleDbType.Integer)).Value = txtMaThu.Text;
                if (cmd.ExecuteNonQuery() == 1)
                {
                    MessageBox.Show("Bạn đã xóa dữ liệu thành công","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                    load_dulieu();
                    battatcontrol(false);
                }
            }
        }
        private void battatTimKiem()
        {
            if (checkTimLoai.Checked == true)
            {
                lbTuNgay.Visible = false;
                lbDenNgay.Visible = false;
                dtTuNgay.Visible = false;
                dtDenNgay.Visible = false;
                lbTimLoai.Visible = true;
                cobTimLoai.Visible = true;                
            }
            else if (checkTimNgay.Checked == true)
            {
                lbTuNgay.Visible = true;
                lbDenNgay.Visible = true;
                dtTuNgay.Visible = true;
                dtDenNgay.Visible = true;
                lbTimLoai.Visible = false;
                cobTimLoai.Visible = false;
            }
            else if (checkTimLoaiVaNgay.Checked == true)
            {
                lbTuNgay.Visible = true;
                lbDenNgay.Visible = true;
                dtTuNgay.Visible = true;
                dtDenNgay.Visible = true;
                lbTimLoai.Visible = true;
                cobTimLoai.Visible = true;
            }
            else
            {
                lbTuNgay.Visible = false;
                lbDenNgay.Visible = false;
                dtTuNgay.Visible = false;
                dtDenNgay.Visible = false;
                lbTimLoai.Visible = false;
                cobTimLoai.Visible = false;
                load_dulieu();
                battatcontrol(false);
            }
        }
        private void checkTimLoai_CheckedChanged(object sender, EventArgs e)
        {
            battatTimKiem();
        }

        private void checkTimNgay_CheckedChanged(object sender, EventArgs e)
        {
            battatTimKiem();
        }
        private void checkTimLoaiVaNgay_CheckedChanged(object sender, EventArgs e)
        {
            battatTimKiem();
        }
        private void btnTimKiem_Click(object sender, EventArgs e)
        {
            if (checkTimLoai.Checked == true)
            {
                OleDbCommand cmd_timloai = new OleDbCommand("Thu_TimLoaiThu", cn.ketnoi());
                cmd_timloai.CommandType = CommandType.StoredProcedure;
                cmd_timloai.Parameters.Add(new OleDbParameter("loaithu", OleDbType.Integer)).Value = cobTimLoai.SelectedValue;
                OleDbDataAdapter da_loai = new OleDbDataAdapter(cmd_timloai);
                DataTable dt_loai = new DataTable();
                da_loai.Fill(dt_loai);
                gridQuanLyThu.DataSource = dt_loai;
            }
            else if(checkTimNgay.Checked==true)
            {
                OleDbCommand cmd_timngay = new OleDbCommand("Thu_TimNgay", cn.ketnoi());
                cmd_timngay.CommandType = CommandType.StoredProcedure;
                cmd_timngay.Parameters.Add(new OleDbParameter("tungay", OleDbType.Date)).Value = dtTuNgay.Value.Date;
                cmd_timngay.Parameters.Add(new OleDbParameter("denngay", OleDbType.Date)).Value = dtDenNgay.Value.Date;
                OleDbDataAdapter da = new OleDbDataAdapter(cmd_timngay);
                DataTable dt_ngay = new DataTable();
                da.Fill(dt_ngay);
                gridQuanLyThu.DataSource = dt_ngay;
            }
            else if (checkTimLoaiVaNgay.Checked==true)
            {
                OleDbCommand cmd_loai_ngay = new OleDbCommand("Thu_TimLoai_Ngay", cn.ketnoi());
                cmd_loai_ngay.CommandType = CommandType.StoredProcedure;
                cmd_loai_ngay.Parameters.Add(new OleDbParameter("tungay", OleDbType.Date)).Value = dtTuNgay.Value.Date;
                cmd_loai_ngay.Parameters.Add(new OleDbParameter("denngay", OleDbType.Date)).Value = dtDenNgay.Value.Date;
                cmd_loai_ngay.Parameters.Add(new OleDbParameter("loaithu", OleDbType.Integer)).Value = cobTimLoai.SelectedValue;
                OleDbDataAdapter da_loai_ngay = new OleDbDataAdapter(cmd_loai_ngay);
                DataTable dt_loai_ngay = new DataTable();
                da_loai_ngay.Fill(dt_loai_ngay);
                gridQuanLyThu.DataSource = dt_loai_ngay;
            }
        }

        private void btnThemNhanhDVT_Click(object sender, EventArgs e)
        {
            frmQuanLyDVT frm = new frmQuanLyDVT();
            frm.ShowDialog();
            load_dulieu();
        }

        private void btnThemNhanhLoaiThu_Click(object sender, EventArgs e)
        {
            frmQuanLyLoai frm = new frmQuanLyLoai();
            frm.ShowDialog();
            load_dulieu();
        }

        
    }
}
